using System;
using System.Collections.Generic;
using System.Text;
using RC.ControlAcceso.BaseDatos;
using System.Data;
using RC.CodigoBarras.Utiles;
using System.Web.Caching;
using RC.ControlAcceso.BaseDatos.GestionHorariaTableAdapters;

namespace RC.ControlAcceso.ObjetosNegocio
{
    public class CA2Pantalla
    {
        #region Variables
        private int _idPantalla;
        private string _nombre;
        private string _descripcion;
        #endregion

        #region Propiedades

        public int IdPantalla
        {
            get { return _idPantalla; }
            set { _idPantalla = value; }
        }
        public string Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }
        public string Descripcion
        {
            get { return _descripcion; }
            set { _descripcion = value; }
        }
        #endregion

        #region Constructores
        public CA2Pantalla()
        {
            _idPantalla = -1;
            Nombre = "";
            Descripcion = "";
        }
        #endregion

        #region Funciones
        
        #endregion

        #region Interfase DAL
        //objeto de la capa DAL
        private static CAPantallaTableAdapter _pantallaAD;
        protected static CAPantallaTableAdapter Adaptador
        {
            get
            {
                if (_pantallaAD == null)
                    _pantallaAD = new CAPantallaTableAdapter();

                return _pantallaAD;
            }
        }
        //public static CA2Pantalla ObtenerPorID(int pIDidPantalla)
        //{
        //    /////////////////////////
        //    // Obtengo objeto desde el cache
        //    CA2Pantalla _pantalla = (CA2Pantalla)CacheCA["Pantalla" + pIDidPantalla.ToString()]; // trato de obtenerlo del cache
        //    if (_pantalla != null)
        //        return _pantalla;
        //    // Fin obtener de cache
        //    ///////////////////////////////////

        //    ///////////////////////////////////////////////
        //    // No esta en el cache lo tengo que traer de la base de datos
        //    GestionHoraria.CAPantallaDataTable _dt;

        //    // obtengo el elemento por ID            
        //    _dt = Adaptador.ObtenerPorId(pIDidPantalla);

        //    // si tiene algo,
        //    if (_dt.Rows.Count > 0)
        //    {
        //        _pantalla = AsignarRowAObjeto((GestionHoraria.CAPantallaRow)_dt.Rows[0]);

        //        // Asigno el nuevo objeto al cache.
        //        CacheCA.Insert("Pantalla" + _pantalla.IdPantalla.ToString(), _pantalla, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(1, 0, 0));
        //    }

        //    return _pantalla;
        //}
        protected static CA2Pantalla AsignarRowAObjeto(GestionHoraria.CAPantallaRow pRow)
        {
            CA2Pantalla _pantalla = null;
            if (pRow != null)
            {
                _pantalla = new CA2Pantalla();
                _pantalla.IdPantalla = pRow.IdPantalla;
                try { _pantalla.Nombre = pRow.Nombre; }
                catch { _pantalla.Nombre = ""; }
                try { _pantalla.Descripcion = pRow.Descripcion; }
                catch { _pantalla.Descripcion = ""; }
            }
            return _pantalla;
        }
        public static int InsertarDAL(string pNombre, string pDescripcion)
        {
            return int.Parse(Adaptador.Insertar(pNombre, pDescripcion).ToString());
        }
        //public bool ActualizarDAL(string pNombre, string pCuit, string pDireccion, string pLocalidad, string pProvincia, string pPais, string pTelefono, string pFax, bool pEstaActivo, int pIdPantalla)
        //{
        //    if (0 < Adaptador.Actualizar(pNombre, pCuit, pDireccion, pLocalidad, pProvincia, pPais, pTelefono, pFax, pEstaActivo, pIdPantalla))
        //    {
        //        //Quito el objeto del cache para que no se tome otra vez con los datos viejos.
        //        CacheCA.Remove(pIdPantalla.ToString());
        //        return true;
        //    }
        //    else
        //        return false;
        //}
        protected static CA2PantallaColeccion AsignarPantallaTableAdapterAPantallaColeccion(GestionHoraria.CAPantallaDataTable pDataTable)
        {
            CA2PantallaColeccion _pantallas = new CA2PantallaColeccion();
            CA2Pantalla _pantalla;

            if ((pDataTable != null)
                && (pDataTable.Rows.Count > 0))
            {
                foreach (GestionHoraria.CAPantallaRow _row in pDataTable.Rows)
                {
                    _pantalla = AsignarRowAObjeto(_row);
                    if (_pantalla != null)
                        _pantallas.Add(_pantalla);
                }
            }
            return _pantallas;
        }
        #endregion
    }
    public class CA2PantallaColeccion : System.Collections.CollectionBase
    {
        public void Add(CA2Pantalla pPantalla)
        {
            this.List.Add(pPantalla);
        }
        public void Remove(int index)
        {
            if (index <= Count - 1 || index >= 0)
            {
                this.List.RemoveAt(index);
            }
            else
            {
                throw new System.ArgumentException("Fuera de rango", "original");
            }
        }
        public CA2Pantalla this[int index]
        {
            get { return ((CA2Pantalla)(this.List[index])); }
            set { this.List[index] = value; }
        }
    }
}